另一個常見的格式是 JSON (JavaScript Object Notation),可以想成是 Python 的 dict 或 list。Python 也有提供標準的模組來處理 JSON 格式的資料,這邊也介紹幾個常用到的 API。
一樣到 Mockaroo 來產資料,這次在 Format 的選項要選擇 JSON。

json 模組提供兩個方法來反序列化(讀取) JSON 格式的資料,兩個方法只差在第一個參數,其他的參數都一樣:
反序列化時會依照下列表格,將 JSON 的資料型態轉換為 Python 的資料型態:
| JSON | Python | 
|---|---|
| object | dict | 
| array | list | 
| string | str | 
| number(int) | int | 
| number(real) | float | 
| true | True | 
| false | False | 
| null | None | 
參考以下程式碼:
import json
with open('mock_data.json', newline='') as jsonfile:
    data = json.load(jsonfile)
    # 或者這樣
    # data = json.loads(jsonfile.read())
    print(data)

json 模組也提供兩個方法來序列化(寫入) JSON 格式的資料,第一個參數都是要序列化的目標,兩個方法只差在第二個參數,其他的參數都一樣:
.write() 方法(通常是文字檔案或二進位檔案實例)用來寫入資料。序列化時會依照下列表格,將 Python 的資料型態轉換為 JSON 的資料型態:
| Python | JSON | 
|---|---|
| dict | object | 
| list, tuple | array | 
| str | string | 
| int, float, int- & float-derived Enums | number | 
| True | true | 
| False | false | 
| None | null | 
參考以下程式碼:
import json
with open('mock_data.json', newline='') as jsonfile:
    data = json.load(jsonfile)
with open('mock_data.json', 'w', newline='') as jsonfile:
    data.append({ \
        'id': 5, \
        'first_name': 'Vin', \
        'last_name': 'Sturdgess', \
        'gender': 'Male', \
        'country': 'Greece' \
    })
    json.dump(data, jsonfile)
    # 或者這樣
    # jsonfile.write(json.dumps(data))

不知道有沒有人發現, 序列化後的字串是沒有排版的,如果閱讀上有需要排版的話,可以在序列化時加上參數來處理。
把 json.dump(data, jsonfile) 換成 json.dump(data, jsonfile, indent=4),執行後再比較一下差別。
但排版後會增加儲存所需的空間跟傳輸量,通常是不建議在儲存時做排版的。